using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._Raster._MosaicDataset
{
    /// <summary>
    /// <para>Add Rasters To Mosaic Dataset</para>
    /// <para>Adds raster datasets to a mosaic dataset from many sources, including a file, folder, table, or web service.</para>
    /// <para>将栅格数据集添加到来自多个来源（包括文件、文件夹、表或 Web 服务）的镶嵌数据集。</para>
    /// </summary>    
    [DisplayName("Add Rasters To Mosaic Dataset")]
    public class AddRastersToMosaicDataset : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public AddRastersToMosaicDataset()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_mosaic_dataset">
        /// <para>Mosaic Dataset</para>
        /// <para>The path and name of the mosaic dataset to which the raster data will be added.</para>
        /// <para>将栅格数据添加到的镶嵌数据集的路径和名称。</para>
        /// </param>
        /// <param name="_raster_type">
        /// <para>Raster Type</para>
        /// <para><xdoc>
        ///   <para>The type of raster that will be added. The raster type is specific to imagery products. It identifies metadata, such as georeferencing, acquisition date, and sensor type, along with a raster format.</para>
        ///   <para>If you are using a LAS, LAS Dataset, or Terrain raster type, a cell size must be specified on the Raster Type properties page.</para>
        ///   <para>The Processing Templates drop-down list contains functions that will be applied to items added to the mosaic dataset and how, or in what order, they will be applied. You can use a single function, such as the Stretch function, or you can chain multiple functions together to create a more advanced product. Most raster types have several preexisting functions associated with them. Use this drop-down list to edit existing functions or add new functions to items that will be added to the mosaic dataset.</para>
        ///   <bulletList>
        ///     <bullet_item>To edit a template, select it in the Processing Templates drop-down list, and click Edit . Once you finish editing the template, click Save to update the template, or click Save As to save it as a new item in the drop-down list. To export a template to disk for use with other mosaic datasets, click the Export button .</bullet_item><para/>
        ///     <bullet_item>To create a template, click Create New Template in the Processing Templates drop-down list. For more information, see Raster function template.</bullet_item><para/>
        ///     <bullet_item>To import a function chain from disk or from the Raster Function pane, click Import in the Processing Templates drop-down list. If the template was created independently of the raster type template editor, you will need to change the name of the primary input raster variable to Dataset. To do this, double-click the first function in the chain and click the Variables tab. Change the value in the Name field of the raster parameter to Dataset.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>将添加的栅格类型。栅格类型特定于影像产品。它可识别元数据，例如地理配准、采集日期和传感器类型，以及栅格格式。</para>
        ///   <para>如果使用的是 LAS、LAS 数据集或 Terrain 栅格类型，则必须在栅格类型属性页面上指定像元大小。</para>
        ///   <para>处理模板下拉列表包含将应用于添加到镶嵌数据集的项目的函数，以及应用方式或顺序。您可以使用单个函数（如 Stretch 函数），也可以将多个函数链接在一起以创建更高级的产品。大多数栅格类型都具有多个与之关联的预先存在的函数。使用此下拉列表可以编辑现有函数或将新函数添加到将添加到镶嵌数据集的项目中。</para>
        ///   <bulletList>
        ///     <bullet_item>要编辑模板，请在处理模板下拉列表中选择该模板，然后单击编辑。完成模板编辑后，单击“保存”以更新模板，或单击“另存为”将其另存为下拉列表中的新项目。要将模板导出到磁盘以用于其他镶嵌数据集，请单击导出按钮 。</bullet_item><para/>
        ///     <bullet_item>要创建模板，请单击“处理模板”下拉列表中的“创建新模板”。有关详细信息，请参阅栅格函数模板。</bullet_item><para/>
        ///     <bullet_item>要从磁盘或栅格函数窗格导入函数链，请单击处理模板下拉列表中的导入。如果模板是独立于栅格类型模板编辑器创建的，则需要将主输入栅格变量的名称更改为数据集。为此，请双击链中的第一个函数，然后单击变量选项卡。将栅格参数的名称字段中的值更改为数据集。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        /// <param name="_input_path">
        /// <para>Input Data</para>
        /// <para><xdoc>
        ///   <para>Specifies the path and name of the input file, folder, raster dataset, mosaic dataset, table, or service.</para>
        ///   <para>Not all input options will be available. The selected raster type determines the available options.</para>
        ///   <bulletList>
        ///     <bullet_item>Dataset—An ArcGIS geographic dataset, such as a raster or mosaic dataset in a geodatabase or table, will be used as input.</bullet_item><para/>
        ///     <bullet_item>Workspace—A folder containing multiple raster datasets will be used as input. The folder can contain subfolders.This option is affected by the Include Sub Folders and Input Data Filter parameters.</bullet_item><para/>
        ///     <bullet_item>File—One or more raster datasets stored in a folder on disk, an image service definition file (.ISDef), or a raster process definition file (.RPDef) will be used as input. The file list will ignore files that do not correspond to the raster type being added. Do not use this option with file formats that are raster datasets, such as TIFF or MrSID files; use the Dataset input type instead.</bullet_item><para/>
        ///     <bullet_item>Service—A WCS, a map, an image service, or a web service layer file will be used as input.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定输入文件、文件夹、栅格数据集、镶嵌数据集、表或服务的路径和名称。</para>
        ///   <para>并非所有输入选项都可用。所选栅格类型决定了可用选项。</para>
        ///   <bulletList>
        ///     <bullet_item>数据集 - ArcGIS 地理数据集（例如地理数据库或表中的栅格或镶嵌数据集）将用作输入。</bullet_item><para/>
        ///     <bullet_item>工作空间 - 包含多个栅格数据集的文件夹将用作输入。该文件夹可以包含子文件夹。此选项受“包括子文件夹”和“输入数据筛选器”参数的影响。</bullet_item><para/>
        ///     <bullet_item>文件 - 存储在磁盘文件夹中的一个或多个栅格数据集，影像服务定义文件 （.ISDef） 或栅格过程定义文件 （.RPDef） 将用作输入。文件列表将忽略与要添加的栅格类型不对应的文件。请勿将此选项用于栅格数据集的文件格式，例如 TIFF 或 MrSID 文件;请改用 Dataset 输入类型。</bullet_item><para/>
        ///     <bullet_item>服务—将使用 WCS、地图、影像服务或 Web 服务图层文件作为输入。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        public AddRastersToMosaicDataset(object _in_mosaic_dataset, object _raster_type, List<object> _input_path)
        {
            this._in_mosaic_dataset = _in_mosaic_dataset;
            this._raster_type = _raster_type;
            this._input_path = _input_path;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Add Rasters To Mosaic Dataset";

        public override string CallName => "management.AddRastersToMosaicDataset";

        public override List<string> AcceptEnvironments => ["extent", "geographicTransformations", "parallelProcessingFactor", "pyramid", "rasterStatistics", "scratchWorkspace", "workspace"];

        public override object[] ParameterInfo => [_in_mosaic_dataset, _raster_type, _input_path, _update_cellsize_ranges.GetGPValue(), _update_boundary.GetGPValue(), _update_overviews.GetGPValue(), _maximum_pyramid_levels, _maximum_cell_size, _minimum_dimension, _spatial_reference, _filter, _sub_folder.GetGPValue(), _duplicate_items_action.GetGPValue(), _build_pyramids.GetGPValue(), _calculate_statistics.GetGPValue(), _build_thumbnails.GetGPValue(), _operation_description, _force_spatial_reference.GetGPValue(), _estimate_statistics.GetGPValue(), _aux_inputs, _enable_pixel_cache.GetGPValue(), _cache_location, _out_mosaic_dataset];

        /// <summary>
        /// <para>Mosaic Dataset</para>
        /// <para>The path and name of the mosaic dataset to which the raster data will be added.</para>
        /// <para>将栅格数据添加到的镶嵌数据集的路径和名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Mosaic Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_mosaic_dataset { get; set; }


        /// <summary>
        /// <para>Raster Type</para>
        /// <para><xdoc>
        ///   <para>The type of raster that will be added. The raster type is specific to imagery products. It identifies metadata, such as georeferencing, acquisition date, and sensor type, along with a raster format.</para>
        ///   <para>If you are using a LAS, LAS Dataset, or Terrain raster type, a cell size must be specified on the Raster Type properties page.</para>
        ///   <para>The Processing Templates drop-down list contains functions that will be applied to items added to the mosaic dataset and how, or in what order, they will be applied. You can use a single function, such as the Stretch function, or you can chain multiple functions together to create a more advanced product. Most raster types have several preexisting functions associated with them. Use this drop-down list to edit existing functions or add new functions to items that will be added to the mosaic dataset.</para>
        ///   <bulletList>
        ///     <bullet_item>To edit a template, select it in the Processing Templates drop-down list, and click Edit . Once you finish editing the template, click Save to update the template, or click Save As to save it as a new item in the drop-down list. To export a template to disk for use with other mosaic datasets, click the Export button .</bullet_item><para/>
        ///     <bullet_item>To create a template, click Create New Template in the Processing Templates drop-down list. For more information, see Raster function template.</bullet_item><para/>
        ///     <bullet_item>To import a function chain from disk or from the Raster Function pane, click Import in the Processing Templates drop-down list. If the template was created independently of the raster type template editor, you will need to change the name of the primary input raster variable to Dataset. To do this, double-click the first function in the chain and click the Variables tab. Change the value in the Name field of the raster parameter to Dataset.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>将添加的栅格类型。栅格类型特定于影像产品。它可识别元数据，例如地理配准、采集日期和传感器类型，以及栅格格式。</para>
        ///   <para>如果使用的是 LAS、LAS 数据集或 Terrain 栅格类型，则必须在栅格类型属性页面上指定像元大小。</para>
        ///   <para>处理模板下拉列表包含将应用于添加到镶嵌数据集的项目的函数，以及应用方式或顺序。您可以使用单个函数（如 Stretch 函数），也可以将多个函数链接在一起以创建更高级的产品。大多数栅格类型都具有多个与之关联的预先存在的函数。使用此下拉列表可以编辑现有函数或将新函数添加到将添加到镶嵌数据集的项目中。</para>
        ///   <bulletList>
        ///     <bullet_item>要编辑模板，请在处理模板下拉列表中选择该模板，然后单击编辑。完成模板编辑后，单击“保存”以更新模板，或单击“另存为”将其另存为下拉列表中的新项目。要将模板导出到磁盘以用于其他镶嵌数据集，请单击导出按钮 。</bullet_item><para/>
        ///     <bullet_item>要创建模板，请单击“处理模板”下拉列表中的“创建新模板”。有关详细信息，请参阅栅格函数模板。</bullet_item><para/>
        ///     <bullet_item>要从磁盘或栅格函数窗格导入函数链，请单击处理模板下拉列表中的导入。如果模板是独立于栅格类型模板编辑器创建的，则需要将主输入栅格变量的名称更改为数据集。为此，请双击链中的第一个函数，然后单击变量选项卡。将栅格参数的名称字段中的值更改为数据集。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Raster Type")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _raster_type { get; set; }


        /// <summary>
        /// <para>Input Data</para>
        /// <para><xdoc>
        ///   <para>Specifies the path and name of the input file, folder, raster dataset, mosaic dataset, table, or service.</para>
        ///   <para>Not all input options will be available. The selected raster type determines the available options.</para>
        ///   <bulletList>
        ///     <bullet_item>Dataset—An ArcGIS geographic dataset, such as a raster or mosaic dataset in a geodatabase or table, will be used as input.</bullet_item><para/>
        ///     <bullet_item>Workspace—A folder containing multiple raster datasets will be used as input. The folder can contain subfolders.This option is affected by the Include Sub Folders and Input Data Filter parameters.</bullet_item><para/>
        ///     <bullet_item>File—One or more raster datasets stored in a folder on disk, an image service definition file (.ISDef), or a raster process definition file (.RPDef) will be used as input. The file list will ignore files that do not correspond to the raster type being added. Do not use this option with file formats that are raster datasets, such as TIFF or MrSID files; use the Dataset input type instead.</bullet_item><para/>
        ///     <bullet_item>Service—A WCS, a map, an image service, or a web service layer file will be used as input.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定输入文件、文件夹、栅格数据集、镶嵌数据集、表或服务的路径和名称。</para>
        ///   <para>并非所有输入选项都可用。所选栅格类型决定了可用选项。</para>
        ///   <bulletList>
        ///     <bullet_item>数据集 - ArcGIS 地理数据集（例如地理数据库或表中的栅格或镶嵌数据集）将用作输入。</bullet_item><para/>
        ///     <bullet_item>工作空间 - 包含多个栅格数据集的文件夹将用作输入。该文件夹可以包含子文件夹。此选项受“包括子文件夹”和“输入数据筛选器”参数的影响。</bullet_item><para/>
        ///     <bullet_item>文件 - 存储在磁盘文件夹中的一个或多个栅格数据集，影像服务定义文件 （.ISDef） 或栅格过程定义文件 （.RPDef） 将用作输入。文件列表将忽略与要添加的栅格类型不对应的文件。请勿将此选项用于栅格数据集的文件格式，例如 TIFF 或 MrSID 文件;请改用 Dataset 输入类型。</bullet_item><para/>
        ///     <bullet_item>服务—将使用 WCS、地图、影像服务或 Web 服务图层文件作为输入。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Data")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public List<object> _input_path { get; set; }


        /// <summary>
        /// <para>Update Cell Size Ranges</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the cell size ranges of each raster in the mosaic dataset will be calculated. These values are written to the attribute table in the minPS and maxPS fields.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—The cell size ranges will be calculated for all the rasters in the mosaic dataset. This is the default.</bullet_item><para/>
        ///     <bullet_item>Unchecked—The cell size ranges will not be calculated.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否计算镶嵌数据集中每个栅格的像元大小范围。这些值将写入属性表的 minPS 和 maxPS 字段中。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 将计算镶嵌数据集中所有栅格的像元大小范围。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>未选中—将不计算像元大小范围。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Update Cell Size Ranges")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _update_cellsize_ranges_value _update_cellsize_ranges { get; set; } = _update_cellsize_ranges_value._true;

        public enum _update_cellsize_ranges_value
        {
            /// <summary>
            /// <para>UPDATE_CELL_SIZES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("UPDATE_CELL_SIZES")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_CELL_SIZES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_CELL_SIZES")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Update Boundary</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the boundary polygon of a mosaic dataset will be generated or updated. By default, the boundary merges all the footprint polygons to create a single boundary representing the extent of the valid pixels.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—The boundary will be generated or updated. This is the default.</bullet_item><para/>
        ///     <bullet_item>Unchecked—The boundary will not be generated or updated.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是生成还是更新镶嵌数据集的边界面。默认情况下，边界会合并所有封装面，以创建表示有效像素范围的单个边界。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 将生成或更新边界。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>未选中 - 不会生成或更新边界。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Update Boundary")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _update_boundary_value _update_boundary { get; set; } = _update_boundary_value._true;

        public enum _update_boundary_value
        {
            /// <summary>
            /// <para>UPDATE_BOUNDARY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("UPDATE_BOUNDARY")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_BOUNDARY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_BOUNDARY")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Update Overviews</para>
        /// <para><xdoc>
        ///   <para>Specifies whether overviews for a mosaic dataset will be defined and generated.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—Overviews will be defined and generated.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Overviews will not be defined or generated. This is the default.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否定义和生成镶嵌数据集的概视图。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 将定义并生成概视图。</bullet_item><para/>
        ///     <bullet_item>未选中 - 不会定义或生成概视图。这是默认设置。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Update Overviews")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _update_overviews_value _update_overviews { get; set; } = _update_overviews_value._false;

        public enum _update_overviews_value
        {
            /// <summary>
            /// <para>UPDATE_OVERVIEWS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("UPDATE_OVERVIEWS")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_OVERVIEWS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_OVERVIEWS")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Maximum Levels</para>
        /// <para><xdoc>
        ///   <para>The maximum number of pyramid levels that will be used in the mosaic dataset. For example, a value of 2 will use only the first two pyramid levels from the source raster. Leaving this parameter blank or typing a value of -1 will build pyramids for all levels.</para>
        ///   <para>This value can affect the display and number of overviews that will be generated.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>将在镶嵌数据集中使用的最大金字塔级别数。例如，值 2 将仅使用源栅格中的前两个金字塔标高。将此参数留空或键入值 -1 将为所有级别构建金字塔。</para>
        ///   <para>此值可能会影响将生成的概览的显示和数量。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Maximum Levels")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long? _maximum_pyramid_levels { get; set; } = null;


        /// <summary>
        /// <para>Maximum Cell Size</para>
        /// <para>The maximum pyramid cell size that will be used in the mosaic dataset.</para>
        /// <para>将在镶嵌数据集中使用的最大金字塔像元大小。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Maximum Cell Size")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double _maximum_cell_size { get; set; } = 0;


        /// <summary>
        /// <para>Minimum Rows or Columns</para>
        /// <para>The minimum dimensions of a raster pyramid that will be used in the mosaic dataset.</para>
        /// <para>将在镶嵌数据集中使用的栅格金字塔的最小尺寸。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Minimum Rows or Columns")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long _minimum_dimension { get; set; } = 1500;


        /// <summary>
        /// <para>Coordinate System for Input Data</para>
        /// <para><xdoc>
        ///   <para>The spatial reference system of the input data.</para>
        ///   <para>This should be specified if the data does not have a coordinate system; otherwise, the coordinate system of the mosaic dataset will be used. This can also be used to override the coordinate system of the input data.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输入数据的空间参考系。</para>
        ///   <para>如果数据没有坐标系，则应指定此值;否则，将使用镶嵌数据集的坐标系。这也可用于覆盖输入数据的坐标系。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Coordinate System for Input Data")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _spatial_reference { get; set; } = null;


        /// <summary>
        /// <para>Input Data Filter</para>
        /// <para><xdoc>
        ///   <para>A filter for the data being added to the mosaic dataset. You can use SQL expressions to create the data filter. The wildcards for the filter work on the full path to the input data.</para>
        ///   <para>The following SQL statement will select the rows in which the following object IDs match:
        ///   <bulletList>
        ///     <bullet_item>OBJECTID IN (19745, 19680, 19681, 19744, 5932, 5931, 5889, 5890, 14551, 14552, 14590, 14591)  </bullet_item></bulletList>
        ///   </para>
        ///   <para>To add only a TIFF image, add an asterisk before a file extension.
        ///   <bulletList>
        ///     <bullet_item>*.TIF  </bullet_item></bulletList>
        ///   </para>
        ///   <para>To add an image with the word sensor in the file path or file name, add an asterisk before and after the word sensor.
        ///   <bulletList>
        ///     <bullet_item>*sensor2009*  </bullet_item></bulletList>
        ///   </para>
        ///   <para>You can also use PERL syntax to create a data filter.
        ///   <bulletList>
        ///     <bullet_item>
        ///       <para>REGEX:.*1923.*|.*1922.*    </para>  </bullet_item><para/>
        ///     <bullet_item>
        ///       <para>REGEX:.*192[34567].*|.*194.*|.*195.*    </para>  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The following PERL syntax with multiple lexical groupings as part of the expression is not supported:
        ///   <bulletList>
        ///     <bullet_item>
        ///       <para>REGEX:.* map_mean_.*(?:(?:[a-z0-9]*)_pptPct_(?:[0-9]|1[0-2]*?)_2[0-9]_*\w*).img    </para>  </bullet_item></bulletList>
        ///   </para>
        ///   <para>Alternatively, you can use the following syntax:
        ///   <bulletList>
        ///     <bullet_item>
        ///       <para>REGEX:.*map_mean_*[a-z0-9]*_pptPct_([0-9]|1[0-2])_2[0-9]*_\w*.img    </para>  </bullet_item></bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>用于添加到镶嵌数据集的数据的过滤器。您可以使用 SQL 表达式创建数据筛选器。筛选器的通配符在输入数据的完整路径上工作。</para>
        /// <para>以下 SQL 语句将选择以下对象 ID 匹配的行：
        ///   <bulletList>
        /// <bullet_item>OBJECTID IN （19745， 19680， 19681， 19744， 5932， 5931， 5889， 5890， 14551， 14552， 14590， 14591） </bullet_item></bulletList>
        ///   </para>
        /// <para>若要仅添加 TIFF 图像，请在文件扩展名前添加星号。
        ///   <bulletList>
        /// <bullet_item>*。TIF系列 </bullet_item></bulletList>
        ///   </para>
        /// <para>若要添加在文件路径或文件名中带有“传感器”一词的图像，请在“传感器”一词前后添加星号。
        ///   <bulletList>
        /// <bullet_item>*传感器2009* </bullet_item></bulletList>
        ///   </para>
        /// <para>您还可以使用 PERL 语法创建数据过滤器。
        ///   <bulletList>
        ///     <bullet_item>
        /// <para>正则表达式：.*1923.*|.*1922年。 </para> </bullet_item><para/>
        ///     <bullet_item>
        /// <para>正则表达式：.*192[34567].*|。*194.*|.*195.* </para> </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>不支持以下具有多个词法分组作为表达式一部分的 PERL 语法：
        ///   <bulletList>
        ///     <bullet_item>
        /// <para>正则表达式：.* map_mean_.*（？:(？：[a-z0-9]*）_pptPct_（？：[0-9]|1[0-2]*？）_2[0-9]_*\w*）.img </para> </bullet_item></bulletList>
        ///   </para>
        /// <para>或者，您可以使用以下语法：
        ///   <bulletList>
        ///     <bullet_item>
        /// <para>正则表达式：.*map_mean_*[a-z0-9]*_pptPct_（[0-9]|1[0-2]）_2[0-9]*_\w*.img </para> </bullet_item></bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Data Filter")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _filter { get; set; } = null;


        /// <summary>
        /// <para>Include Sub Folders</para>
        /// <para><xdoc>
        ///   <para>Specifies whether subfolders will be recursively explored.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—All subfolders will be explored for data. This is the default.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Only the top-level folder will be explored for data.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否以递归方式浏览子文件夹。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 将浏览所有子文件夹以查找数据。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>未选中 - 仅浏览顶级文件夹以获取数据。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include Sub Folders")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _sub_folder_value _sub_folder { get; set; } = _sub_folder_value._true;

        public enum _sub_folder_value
        {
            /// <summary>
            /// <para>SUBFOLDERS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("SUBFOLDERS")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_SUBFOLDERS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_SUBFOLDERS")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Add New Datasets Only</para>
        /// <para><xdoc>
        ///   <para>Specifies how duplicate rasters will be handled. A check will be performed to determine whether each raster has already been added, using the original path and file name. Choose the action to be performed when a duplicate path and file name are found.</para>
        ///   <bulletList>
        ///     <bullet_item>Allow duplicates—All rasters will be added even if they already exist in the mosaic dataset. This is the default.</bullet_item><para/>
        ///     <bullet_item>Exclude duplicates—The duplicate raster will not be added.</bullet_item><para/>
        ///     <bullet_item>Overwrite duplicates—The duplicate raster will overwrite the existing raster.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定如何处理重复栅格。将使用原始路径和文件名执行检查以确定是否已添加每个栅格。选择找到重复路径和文件名时要执行的操作。</para>
        ///   <bulletList>
        ///     <bullet_item>允许重复项 - 即使镶嵌数据集中已存在栅格，也会添加所有栅格。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>排除重复项—不会添加重复栅格。</bullet_item><para/>
        ///     <bullet_item>覆盖重复项—重复栅格将覆盖现有栅格。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Add New Datasets Only")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _duplicate_items_action_value _duplicate_items_action { get; set; } = _duplicate_items_action_value._ALLOW_DUPLICATES;

        public enum _duplicate_items_action_value
        {
            /// <summary>
            /// <para>Allow duplicates</para>
            /// <para>Allow duplicates—All rasters will be added even if they already exist in the mosaic dataset. This is the default.</para>
            /// <para>允许重复项 - 即使镶嵌数据集中已存在栅格，也会添加所有栅格。这是默认设置。</para>
            /// </summary>
            [Description("Allow duplicates")]
            [GPEnumValue("ALLOW_DUPLICATES")]
            _ALLOW_DUPLICATES,

            /// <summary>
            /// <para>Exclude duplicates</para>
            /// <para>Exclude duplicates—The duplicate raster will not be added.</para>
            /// <para>排除重复项—不会添加重复栅格。</para>
            /// </summary>
            [Description("Exclude duplicates")]
            [GPEnumValue("EXCLUDE_DUPLICATES")]
            _EXCLUDE_DUPLICATES,

            /// <summary>
            /// <para>Overwrite duplicates</para>
            /// <para>Overwrite duplicates—The duplicate raster will overwrite the existing raster.</para>
            /// <para>覆盖重复项—重复栅格将覆盖现有栅格。</para>
            /// </summary>
            [Description("Overwrite duplicates")]
            [GPEnumValue("OVERWRITE_DUPLICATES")]
            _OVERWRITE_DUPLICATES,

        }

        /// <summary>
        /// <para>Build Raster Pyramids</para>
        /// <para><xdoc>
        ///   <para>Specifies whether pyramids will be built for each source raster.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Pyramids will not be built. This is the default.</bullet_item><para/>
        ///     <bullet_item>Checked—Pyramids will be built.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否为每个源栅格构建金字塔。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中 - 不会构建金字塔。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>选中 - 将构建金字塔。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Build Raster Pyramids")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _build_pyramids_value _build_pyramids { get; set; } = _build_pyramids_value._false;

        public enum _build_pyramids_value
        {
            /// <summary>
            /// <para>BUILD_PYRAMIDS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("BUILD_PYRAMIDS")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_PYRAMIDS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_PYRAMIDS")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Calculate Statistics</para>
        /// <para><xdoc>
        ///   <para>Specifies whether statistics will be calculated for each source raster.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Statistics will not be calculated. This is the default.</bullet_item><para/>
        ///     <bullet_item>Checked—Statistics will be calculated.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否为每个源栅格计算统计数据。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中 - 将不计算统计数据。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>选中—将计算统计数据。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Calculate Statistics")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _calculate_statistics_value _calculate_statistics { get; set; } = _calculate_statistics_value._false;

        public enum _calculate_statistics_value
        {
            /// <summary>
            /// <para>CALCULATE_STATISTICS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("CALCULATE_STATISTICS")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_STATISTICS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_STATISTICS")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Build Thumbnails</para>
        /// <para><xdoc>
        ///   <para>Specifies whether thumbnails will be built for each source raster.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Thumbnails will not be built. This is the default.</bullet_item><para/>
        ///     <bullet_item>Checked—Thumbnails will be built.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否为每个源栅格构建缩略图。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中 - 不会构建缩略图。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>选中 - 将构建缩略图。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Build Thumbnails")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _build_thumbnails_value _build_thumbnails { get; set; } = _build_thumbnails_value._false;

        public enum _build_thumbnails_value
        {
            /// <summary>
            /// <para>BUILD_THUMBNAILS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("BUILD_THUMBNAILS")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_THUMBNAILS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_THUMBNAILS")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Operation Description</para>
        /// <para>The description used to represent the operation of adding raster data. It will be added to the raster type table, which can be used as part of a search or as a reference at another time.</para>
        /// <para>用于表示添加栅格数据操作的描述。栅格类型表将添加到栅格类型表中，该表可用作搜索的一部分，也可在其他时间用作参考。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Operation Description")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _operation_description { get; set; } = null;


        /// <summary>
        /// <para>Force this Coordinate System for Input Data</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the Coordinate System for Input Data parameter value will be used for all the rasters when loading data into the mosaic dataset. This option does not reproject the data; it uses the coordinate system defined in the tool to construct items in the mosaic dataset. The extent of the image will be used, but the projection will be overwritten.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—The coordinate system of each raster data will be used when loading data. This is the default. If unchecked and the input image does not have a coordinate system (that is, it's unknown), the mosaic dataset coordinate system will be used in constructing mosaic dataset items. If the image has a coordinate system, that coordinate system will be used.</bullet_item><para/>
        ///     <bullet_item>Checked—The coordinate system specified in the Coordinate System for Input Data parameter will be used for each of the raster datasets when loading data.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定将数据加载到镶嵌数据集时是否将输入数据的坐标系参数值用于所有栅格。此选项不会重新投影数据;它使用工具中定义的坐标系来构造镶嵌数据集中的项目。将使用图像的范围，但投影将被覆盖。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中—加载数据时将使用每个栅格数据的坐标系。这是默认设置。如果未选中且输入图像没有坐标系（即未知），则镶嵌数据集坐标系将用于构建镶嵌数据集项目。如果图像具有坐标系，则将使用该坐标系。</bullet_item><para/>
        ///     <bullet_item>选中 - 加载数据时，将在输入数据坐标系参数中指定的坐标系用于每个栅格数据集。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Force this Coordinate System for Input Data")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _force_spatial_reference_value _force_spatial_reference { get; set; } = _force_spatial_reference_value._false;

        public enum _force_spatial_reference_value
        {
            /// <summary>
            /// <para>FORCE_SPATIAL_REFERENCE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("FORCE_SPATIAL_REFERENCE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_FORCE_SPATIAL_REFERENCE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_FORCE_SPATIAL_REFERENCE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Estimate Mosaic Dataset Statistics</para>
        /// <para><xdoc>
        ///   <para>Specifies whether statistics will be estimated on the mosaic dataset for faster rendering and processing at the mosaic dataset level.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Statistics will not be estimated. Statistics generated from each item in the mosaic dataset will be used for display and processing. This is the default.</bullet_item><para/>
        ///     <bullet_item>Checked—Statistics will be estimated at the mosaic dataset level. This will use the distribution of pixels to display the mosaic dataset rather than the distribution of the source item in the mosaic dataset.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否在镶嵌数据集上估计统计数据，以便在镶嵌数据集级别加快渲染和处理速度。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中 - 将不估计统计数据。从镶嵌数据集中每个项目生成的统计数据将用于显示和处理。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>选中—将在镶嵌数据集级别估计统计数据。这将使用像素的分布来显示镶嵌数据集，而不是镶嵌数据集中源项的分布。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Estimate Mosaic Dataset Statistics")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _estimate_statistics_value _estimate_statistics { get; set; } = _estimate_statistics_value._false;

        public enum _estimate_statistics_value
        {
            /// <summary>
            /// <para>ESTIMATE_STATISTICS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ESTIMATE_STATISTICS")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_STATISTICS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_STATISTICS")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Auxiliary Inputs</para>
        /// <para>The raster type settings that will be defined on the Raster Type Properties page. The settings in this parameter will override the settings defined on the Raster Type Properties page.</para>
        /// <para>将在栅格类型属性页面上定义的栅格类型设置。此参数中的设置将覆盖栅格类型属性页面上定义的设置。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Auxiliary Inputs")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _aux_inputs { get; set; } = null;


        /// <summary>
        /// <para>Enable Pixel Cache</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the pixel cache will be generated for faster display and processing of the mosaic dataset.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—The pixel cache will not be generated. This is the default.</bullet_item><para/>
        ///     <bullet_item>Checked—The pixel cache will be generated.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否生成像素缓存以加快镶嵌数据集的显示和处理速度。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中 - 不会生成像素缓存。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>选中 - 将生成像素缓存。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Enable Pixel Cache")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _enable_pixel_cache_value _enable_pixel_cache { get; set; } = _enable_pixel_cache_value._false;

        public enum _enable_pixel_cache_value
        {
            /// <summary>
            /// <para>USE_PIXEL_CACHE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("USE_PIXEL_CACHE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_PIXEL_CACHE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_PIXEL_CACHE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Pixel Cache Location</para>
        /// <para><xdoc>
        ///   <para>The location of the pixel cache. If no location is defined, the cache is written to C:\Users\<Username>\AppData\Local\ESRI\rasterproxies\.</para>
        ///   <para>Once the location is defined, you do not need to redefine the path when adding new rasters to the mosaic dataset. You only need to check the Enable Pixel Cache parameter (enable_pixel_cache = "USE_PIXEL_CACHE" in Python) when adding the new data.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>像素缓存的位置。如果未定义位置，则缓存将写入 C：\Users\<Username>\AppData\Local\ESRI\rasterproxies\。</para>
        ///   <para>定义位置后，在向镶嵌数据集添加新栅格时无需重新定义路径。添加新数据时，您只需选中启用像素缓存参数（Python 中的 enable_pixel_cache = “USE_PIXEL_CACHE”）。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Pixel Cache Location")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _cache_location { get; set; } = null;


        /// <summary>
        /// <para>Updated Mosaic Dataset</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Mosaic Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_mosaic_dataset { get; set; }


        public AddRastersToMosaicDataset SetEnv(object extent = null, object geographicTransformations = null, object parallelProcessingFactor = null, object pyramid = null, object rasterStatistics = null, object scratchWorkspace = null, object workspace = null)
        {
            base.SetEnv(extent: extent, geographicTransformations: geographicTransformations, parallelProcessingFactor: parallelProcessingFactor, pyramid: pyramid, rasterStatistics: rasterStatistics, scratchWorkspace: scratchWorkspace, workspace: workspace);
            return this;
        }

    }

}